<?php 
class App{
	public static function run(){
		//初始化框架
		self::_init();
		//自动载入
		//让__CLASS__当前类，这个里面_auto拥有自动载入功能
		spl_autoload_register(array(__CLASS__,'_auto'));
		//实例化控制器
		self::_appRun();
	}
	
	
	/**
	 * 会把未找到的类名传入
	 */
	private static function _auto($className){
		//倒数截取10个字符为Controller，那么这个类就是控制器，
		if(substr($className, -10) == 'Controller'){
			//组合控制器路径
			$path = "Application/" . MODULE . "/Controller/{$className}.class.php";
		}else if(substr($className, -5) == 'Model'){
			//组合模型路径
			$path = "Hdphp/Model/{$className}.class.php";
		}else{
			//否则组合tool路径
			$path = "Hdphp/Tool/{$className}.class.php";
		}
		//载入
		require $path;
	}
	
	/**
	 * 执行应用
	 */
	private static function _appRun(){
		$controller = CONTROLLER . 'Controller';
		//实例化控制器
		$obj = new $controller;
		//方法
		$action = ACTION;
		$obj->$action();
	}
	
	/**
	 * 初始化框架
	 */
	private static function _init(){
		//定义IS_POST
		//$_SERVER 超级全局数组 里面有系统的信息
		define('IS_POST',$_SERVER['REQUEST_METHOD'] == 'POST' ? true : false);
		//模块处理
		$module = isset($_GET['m']) ? $_GET['m'] : 'Home';
		define('MODULE', $module);
		//控制器处理
		$controller = isset($_GET['c']) ? $_GET['c'] : 'Index';
		define('CONTROLLER', $controller);
		//执行方法处理
		$action = isset($_GET['a']) ? $_GET['a'] : 'index';
		define('ACTION', $action);
		
		//加载配置项**** 注意顺序
		//框架配置项
		C(include "Hdphp/config.php");
		//公共配置项
		C(include "Application/Common/Conf/config.php");
		//用户配置项
		C(include "Application/".MODULE."/Conf/config.php");
		//如果session已经被开启了，就不开启session
		session_id() || session_start();
		//设置时区
		date_default_timezone_set(C('DATE_TIMEZONE'));
	}
}





